﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Data.SqlClient;
using HMS.Report;

namespace HMS
{
    public partial class FRM_Taophieukham : DevExpress.XtraEditors.XtraForm
    {
        private SqlConnection con = new SqlConnection(FRM_Manhinhchinh.sConn);
        private SqlDataAdapter dataAp;
        private DataTable dataTable;
        private SqlCommand cmd;
        private string sMaBenhnhan = ucDanhsachbenhnhan.sGetID;
        private bool bUpdate = ucDanhsachbenhnhan.bUpdate;
        private bool bClick = ucDanhsachbenhnhan.bClick;

        public FRM_Taophieukham()
        {
            InitializeComponent();
        }

        public DataTable GetDataTable(string sql)
        {
            // Tạo dataApdapter, thực hiện câu lệnh query
            dataAp = new SqlDataAdapter(sql, con);
            // Đổ dữ liệu vào DataTable
            dataTable = new DataTable();
            dataAp.Fill(dataTable);
            return dataTable;
        }// end GetDataTable

        // Số phiếu khám tự động tăng
        private string NextID()
        {
            string sDate = DateTime.Now.Date.ToString("yyyy/MM/dd").Replace("/", "") + "-";
            GetDataTable("select max(paper_number) as paper_number from tblME_paper");
            if (dataTable.Rows[0]["paper_number"].ToString() == "")
                return sDate + "0001";
            else
            {
                string MaPK = dataTable.Rows[0]["paper_number"].ToString();
                int iMaPK = int.Parse(MaPK.Remove(0, 9)) + 1;
                string zeroNumber = "";
                for (int i = 0; i < 3; i++)
                    if (iMaPK < Math.Pow(10, i))
                    {
                        for (int j = 0; j <= 3 - i; i++)
                            zeroNumber += "0";
                        return sDate + zeroNumber + iMaPK.ToString();
                    }// end if
                return sDate + iMaPK.ToString();
            }// end else
        }// end NextID

        // Lấy STT tự động
        private void LaySTT(string sDepartment)
        {            
            string sDatetime = dateTimeTaoPK.Value.ToString("dd/M/yyyy");
            string sSQL = "select max(patient_number) as patient_number from tblme_paper where department_id = N'"
                + sDepartment + "' and paper_createdate between dateadd(dd,datediff (dd,0,getdate()),0) and getdate()";
            GetDataTable(sSQL);
            string iSTT_old = dataTable.Rows[0]["patient_number"].ToString();
            if (iSTT_old != "")
            {
                int iSTT = int.Parse(dataTable.Rows[0][0].ToString()) + 1;
                txtSTT.Text = iSTT.ToString();
            }// end if
            else txtSTT.Text = "1";
        }// end LaySTT

        // Load data lên giao diện
        private void Load_data(string sInput)
        {
            try
            {
                string sSQL = "select *"
                            + " from tblPatient u, tblcity d where u.patient_id  = '" + sInput + "'";
                GetDataTable(sSQL);
                txtMabenhnhan.Text = dataTable.Rows[0]["Patient_ID"].ToString();
                txtTenlot.Text = dataTable.Rows[0]["Patient_LName"].ToString();
                txtTen.Text = dataTable.Rows[0]["Patient_FName"].ToString();
                txtSophieukham.Text = NextID();
            }// end try
            catch { return; }
        }// end Load_data

        // Load form tạo phiếu khám
        private void FRM_Taophieukham_Load(object sender, EventArgs e)
        {
            // Nút Tạo hồ sơ bệnh nhân và nút Cập nhật bệnh nhân được click
            if (bClick == false)
            {
                string sSQLShow = "select max(patient_id) as patient_id from tblpatient";
                GetDataTable(sSQLShow);
                // Trạng thái Nút là Tạo hồ sơ bệnh nhân
                if (bUpdate == false) Load_data(dataTable.Rows[0][0].ToString());

                // Trạng thái Nút là Cập nhật bệnh nhân
                else Load_data(sMaBenhnhan);
            }// end if
                
            // Nút Tạo phiếu khám được click
            else Load_data(ucDanhsachbenhnhan.sGetID);

            GetDataTable("select department_name,department_id from tbldepartment where kind_id = '1'");
            cmbPhongkham.DataSource = dataTable;
            cmbPhongkham.DisplayMember = "department_name";
            cmbPhongkham.ValueMember = "department_id";
            string sDepartment = cmbPhongkham.SelectedValue.ToString();
            LaySTT(sDepartment);
        }// end FRM_Taophieukham_Load
        
        // Event click cho nút Hủy 
        private void btnHuy_Click(object sender, EventArgs e)
        {
            DialogResult reusult = MessageBox.Show("Bạn có chắc chắn muốn thoát?",
                "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (reusult == DialogResult.Yes) this.Visible = false;
        }// end btnHuy_Click

        // Event click cho nút Lưu và in 
        private void btnLuuvain_Click(object sender, EventArgs e)
        { 
            btnLuu_Click(null, null);
            GetDataTable("select patient_gender, patient_age, paper_cost, patient_number from tblme_paper where paper_number = '"
                + txtSophieukham.Text + "'");
            try
            {
                rptPhieukham rpt = new rptPhieukham();
                rpt.lblMabenhnhan.Text = txtMabenhnhan.Text;
                rpt.lblPhongkham.Text = cmbPhongkham.Text;
                rpt.lblSophieukham.Text = txtSophieukham.Text;
                rpt.lblTenbenhnhan.Text = String.Format("{0} {1}", txtTenlot.Text, txtTen.Text);
                rpt.lblGioitinh.Text = dataTable.Rows[0][0].ToString();
                rpt.lblTuoi.Text = dataTable.Rows[0][1].ToString();
                rpt.lblGia.Text = dataTable.Rows[0][2].ToString();
                rpt.lblSTT.Text = dataTable.Rows[0][3].ToString();
                rpt.lblThanhtien.Text = ReadNumber.ChuyenSo(dataTable.Rows[0][2].ToString());
                rpt.xrMavach.Text = txtMabenhnhan.Text;
                rpt.lblLido.Text = txtLido.Text;
                FRM_Manhinhchinh frm = new FRM_Manhinhchinh();
                rpt.lblNguoilap.Text = String.Format("{0} - {1}", FRM_Dangnhap.userid, FRM_Dangnhap.name);
                rpt.ShowRibbonPreviewDialog();
            }// end try
            catch
            {
                
            }// end catch
        }// end  btnLuuvain_Click

        // Event click cho nút Lưu
        private void btnLuu_Click(object sender, EventArgs e)
        {
            // Khai báo biến
            string sMaBN = txtMabenhnhan.Text, sHo = txtTenlot.Text, sTen = txtTen.Text,
                sSoPK = txtSophieukham.Text, sPK = cmbPhongkham.Text,
                sLido = txtLido.Text, sNgay = dateTimeTaoPK.Value.ToString("yyyy-MM-dd HH:mm:ss.fff"), sSTT = txtSTT.Text;
            string sSQL = "select p.patient_gender, p.patient_year, (u.user_lname +' '+ u.user_fname) as username,"
                + " d.department_cost, d.department_id from tblpatient p, tbluser u, tbldepartment d"
                + " where p.patient_id = '" + txtMabenhnhan.Text + "' and userid = '" + FRM_Dangnhap.userid
                + "' and d.department_name = N'" + sPK + "'";
            GetDataTable(sSQL);

            string sAge = (DateTime.Now.Year - int.Parse(dataTable.Rows[0]["patient_year"].ToString())).ToString(),
                sUsername = dataTable.Rows[0]["username"].ToString(),
                sGioiTinh = dataTable.Rows[0]["patient_gender"].ToString(),
                sGia = dataTable.Rows[0]["department_cost"].ToString(),
                MaPK = dataTable.Rows[0]["department_id"].ToString();

            // Kiểm tra Lí do khám bệnh không được rỗng
            if (sLido != "")
            {
                // Thực hiện lưu
                con.Open();//mo ket noi
                cmd = new SqlCommand("insert into tblME_Paper values('','" + sSoPK + "',N'"
                    + sUsername + "',convert(datetime, '" + sNgay + "',121),'" + sGia + "',N'"
                    + sLido + "','" + sMaBN + "',N'" + sTen + "',N'" + sHo + "','" + sAge + "','"
                    + sSTT + "',N'" + sGioiTinh + "','" + FRM_Dangnhap.userid + "','" + MaPK + "')", con);
                cmd.ExecuteNonQuery();//thuc hien cau lenh
                con.Close();//dong ket noi
                MessageBox.Show("Tạo phiếu khám thành công!", "Thông báo", MessageBoxButtons.OK,MessageBoxIcon.Information);
                this.Close();
            }// end if
            else MessageBox.Show("Vui lòng nhập đầy đủ thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);            
        }// end btnLuu_Click

        private void cmbPhongkham_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sDepartment = cmbPhongkham.SelectedValue.ToString();
            LaySTT(sDepartment);
        }// end cmbPhongkham_SelectedIndexChanged

    }// end
}// end namespace